package interview.singleton;

/**
 * 2. 单线程写法
 * <p>
 * 这种写法是最简单的，由私有构造器和一个公有静态工厂方法构成，
 * 在工厂方法中对singleton进行null判断，如果是null就new一个出来，
 * 最后返回singleton对象。这种方法可以实现延时加载，但是有一个致命
 * 弱点：线程不安全。如果有两条线程同时调用getSingleton()方法，就
 * 有很大可能导致重复创建对象。
 */
public class Singleton2 {

    private static Singleton2 singleton = null;

    private Singleton2() {
    }

    public static Singleton2 getSingleton() {
        if (singleton == null)
            singleton = new Singleton2();
        return singleton;
    }
}